package com.platform.enums;

import com.platform.comm.constants.EnumOption;
import com.platform.comm.enums.IEnumOption;

import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author liujizheng
 * @version 1.0
 * @ClassName PlanCategory
 * @Description 方案类别
 * @date 2021/9/6 10:53
 */
@EnumOption(name = "planCategory")
public enum PlanCategory implements IEnumOption<String> {

    /**
     * FTP采报
     */
    FTP_GATHER("FTP采报",1),
    /**
     * DB采报
     */
    DB_GATHER("数据库采报",1),

    /**
     * 贴源交换
     */
    ODS_EXCHANGE("贴源交换",2),

    /**
     * 通用交换
     */
    COMMON_EXCHANGE("通用交换",2),

    /**
     * 上报交换
     */
    SUBMIT_EXCHANGE("上报交换",2),

    /**
     * 脚本交换
     */
    SCRIPT_EXCHANGE("脚本转换",2),

    /**
     * 归档交换
     */
    ARCHIVE_EXCHANGE("归档交换",2);

    private String title;

    /**
     *  方案所属 1：归集 2：交换
     */
    private int type;

    PlanCategory(String title) {
        this.title = title;
    }

    PlanCategory(String title, int type) {
        this.title = title;
        this.type = type;
    }

    /**
     * 枚举项 “键”
     *
     * @return key
     */
    @Override
    public String key() {
        return name();
    }

    /**
     * 枚举项 “值”
     *
     * @return value
     */
    @Override
    public String value() {
        return title;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    /**
     * 枚举options
     *
     * @return
     */
    @Override
    public Map<String, String> enums() {
        return Arrays.stream(values()).collect(Collectors.toMap(IEnumOption::key, IEnumOption::value));
    }
}
